import axios from 'axios' // 使用前要先安装依赖：npm install axios

// 创建axios实例
const service = axios.create({ 
	// 这里可以放一下公用属性等。
	baseUrl: '', // 用于配置请求接口公用部分，请求时会自动拼接在你定义的url前面。
	withCredentials: false, // 跨域请求时是否需要访问凭证
	timeout: 30 * 1000, // 请求超时时间
	headers: { // 请求头
		
	}
})

// 请求拦截器
service.interceptors.request.use(config => {
	// 这里可以进行请求加密等操作。如添加token,cookie，修改数据传输格式等。
	config.headers['Content-type'] = 'application/json;charset=utf-8';

	//一个数组白名单数组里面的路径都不需要token，都走下面的无token逻辑
	let WhiteList = ['api/testLoginController/login',
	,"api/testLoginController/register","api/email/codeIsCorrect","api/email/emailCodeIsCorrect","api/blog/searchAllArticle"
	,"api/wqunAccountController/findAccountPass","api/blog/findAllArticle","api/wqunDataStatisticsController/tenYearData","api/blog/findArticleById"]
	let reqUrl=config.url //可以直接获取到当前请求的url地址
	WhiteList.includes(reqUrl)
	//不需要token的接口走这里
	if(WhiteList.includes(reqUrl)){
		return config;
	}else {
	  	config.headers['token'] = JSON.parse(sessionStorage.getItem("token"));
	}
	//如果是文件上传，则需要将请求头参数类型改为multipart/form-data
	let FileList = ['api/util/uploadImg','api/util/uploadFile','api/util/uploadProject']
	FileList.includes(reqUrl)
	//文件发送的接口走这里
	if(FileList.includes(reqUrl)){
		config.headers['Content-type'] = 'multipart/form-data;charset=utf-8';
	}else {}
	return config;
})

service.interceptors.response.use(response => {

	//请求成功进行的操作。// 可以使用switch/if...else对数据先进行处理。
	// if(response.data.code == "401"){
	// 	window.location.href="http://localhost:8888/#/login";
	// }
	return response;
}, error => {
	// 请求失败进行的操作
	
	return error;
})

export default service;
